﻿using System;
using System.Collections.Generic;

//
// Wrapper pro nižší verzi. Vygenorováno xsd.exe a upraveno na wrapper.
//
using System.Xml.Serialization;

namespace Brjnk.GpxExplorer.Data.GPX.SerializationClasses
{
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.topografix.com/GPX/1/0")]
    [System.Xml.Serialization.XmlRootAttribute("gpx", Namespace = "http://www.topografix.com/GPX/1/0", IsNullable = false)]
    public partial class gpx1_0 : XmlClassWrapper<gpxType>
    {
        public gpx1_0()
            : base(new gpxType())
        { }

        public gpx1_0(gpxType data)
            : base(data)
        {
        }

        private bool ExtensionsAvailable()
        {
            return ((object)data.extensions != null);
        }

        private bool EmailAvailable()
        {
            if (AuthorAvailable() == false) return false;
            if ((object)data.metadata.author.email == null) return false;
            return true;
        }

        private void CreateExtensions()
        {
            if ((object)data.extensions == null) data.extensions = new extensionsType();
        }

        //Vytvoří objekt metadata a přiřadí ho do obalovaného objektu (pokud již není vytvořen)
        private void CreateMetadata()
        {
            if ((object)data.metadata == null) data.metadata = new metadataType();
        }

        private void CreateAuthor()
        {
            CreateMetadata();
            if ((object)data.metadata.author == null) data.metadata.author = new personType();
        }

        private void CreateEmail()
        {
            CreateAuthor();
            if ((object)data.metadata.author.email == null) data.metadata.author.email = new emailType();
        }

        private void CreateAuthorLink()
        {
            CreateAuthor();
            if ((object)data.metadata.author.link == null) data.metadata.author.link = new linkType();
        }

        private void CreateBounds()
        {
            CreateMetadata();
            if ((object)data.metadata.bounds == null) data.metadata.bounds = new boundsType();
        }

        private bool MetadataAvailable()
        {
            if ((object)data.metadata == null) return false;
            return true;
        }

        private bool BoundsAvailable()
        {
            if (!MetadataAvailable()) return false;
            if ((object)data.metadata.bounds == null) return false;
            return true;
        }

        private bool AuthorAvailable()
        {
            if (!MetadataAvailable()) return false;
            if ((object)data.metadata.author == null) return false;
            return true;
        }

        private bool AuthorLinkAvailable()
        {
            if (!AuthorAvailable()) return false;
            if ((object)data.metadata.author.link == null) return false;
            return true;
        }

        /// <remarks/>
        public string name
        {
            get
            {
                if (!MetadataAvailable()) return null;
                return data.metadata.name;
            }
            set
            {
                CreateMetadata();
                data.metadata.name = value;
            }
        }

        /// <remarks/>
        public string desc
        {
            get
            {
                if (!MetadataAvailable()) return null;
                return data.metadata.desc;
            }
            set
            {
                CreateMetadata();
                data.metadata.desc = value;
            }
        }

        /// <remarks/>
        public string author
        {
            get
            {
                if (!AuthorAvailable()) return null;
                return data.metadata.author.name;
            }
            set
            {
                CreateAuthor();
                data.metadata.author.name = value;
            }
        }

        /// <remarks/>
        public string email
        {
            get
            {
                if (!EmailAvailable()) return null;
                return data.metadata.author.email.ToString();
            }
            set
            {
                CreateEmail();
                data.metadata.author.email = emailType.FromString(value);
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")]
        public string url
        {
            get
            {
                if (!AuthorLinkAvailable()) return null;
                return data.metadata.author.link.href;
            }
            set
            {
                CreateAuthorLink();
                data.metadata.author.link.href = value;
            }
        }

        /// <remarks/>
        public string urlname
        {
            get
            {
                if (!AuthorLinkAvailable()) return null;
                return data.metadata.author.link.text;
            }
            set
            {
                CreateAuthorLink();
                data.metadata.author.link.text = value;
            }
        }

        /// <remarks/>
        public System.DateTime time
        {
            get
            {
                if (!MetadataAvailable()) return default(DateTime);
                return data.metadata.time;
            }
            set
            {
                CreateMetadata();
                data.metadata.time = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool timeSpecified
        {
            get
            {
                if (!MetadataAvailable()) return false;
                return data.metadata.timeSpecified;
            }
            set
            {
                CreateMetadata();
                data.metadata.timeSpecified = value;
            }
        }

        /// <remarks/>
        public string keywords
        {
            get
            {
                if (!MetadataAvailable()) return null;
                return data.metadata.keywords;
            }
            set
            {
                CreateMetadata();
                data.metadata.keywords = value;
            }
        }

        /// <remarks/>
        public boundsType1_0 bounds
        {
            get
            {
                if (!BoundsAvailable()) return null;
                return new boundsType1_0(data.metadata.bounds);
            }
            set
            {
                CreateBounds();
                data.metadata.bounds = value.WrappedData;
            }
        }

        private void CreateWpt() { if (data.wpt == null) data.wpt = new List<wptType>(); }

        private void CreateRte() { if (data.rte == null) data.rte = new List<rteType>(); }

        private void CreateTrk() { if (data.trk == null) data.trk = new List<trkType>(); }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("wpt")]
        public CollectionWrapper<gpxWpt1_0, wptType> wpt
        {
            get
            {
                CreateWpt();
                return new CollectionWrapper<gpxWpt1_0, wptType>(data.wpt);
            }
            set
            {
                CreateWpt();
                data.wpt = value.Data as List<wptType>;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("rte")]
        public CollectionWrapper<gpxRte1_0, rteType> rte
        {
            get
            {
                CreateRte();
                return new CollectionWrapper<gpxRte1_0, rteType>(data.rte);
            }
            set
            {
                CreateRte();
                data.rte = value.Data as List<rteType>;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("trk")]
        public CollectionWrapper<gpxTrk1_0, trkType> trk
        {
            get
            {
                CreateTrk();
                return new CollectionWrapper<gpxTrk1_0, trkType>(data.trk);
            }
            set
            {
                CreateTrk();
                data.trk = value.Data as List<trkType>;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        public System.Xml.XmlElement[] Any
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.Any;
            }
            set
            {
                CreateExtensions();
                data.extensions.Any = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string version
        {
            get
            {
                return "1.0";
            }
            set
            {
                System.Diagnostics.Debug.Assert(value == "1.0", "Chyba verze Gpx při deserializaci. Očekávaná verze je 1.0");
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string creator
        {
            get
            {
                return data.creator;
            }
            set
            {
                data.creator = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.topografix.com/GPX/1/0")]
    public partial class boundsType1_0 : XmlClassWrapper<boundsType>
    {
        public boundsType1_0()
            : base(new boundsType())
        { }

        public boundsType1_0(boundsType data)
            : base(data)
        {
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal minlat
        {
            get
            {
                return data.minlat;
            }
            set
            {
                data.minlat = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal minlon
        {
            get
            {
                return data.minlon;
            }
            set
            {
                data.minlon = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal maxlat
        {
            get
            {
                return data.maxlat;
            }
            set
            {
                data.maxlat = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal maxlon
        {
            get
            {
                return data.maxlon;
            }
            set
            {
                data.maxlon = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.topografix.com/GPX/1/0")]
    public partial class gpxWpt1_0 : XmlClassWrapper<wptType>
    {
        public gpxWpt1_0()
            : base(new wptType())
        { }

        public gpxWpt1_0(wptType data)
            : base(data)
        {
        }

        private bool LinkAvailable()
        {
            return ((object)data.link != null);
        }

        private void CreateLink()
        {
            if ((object)data.link == null) data.link = new List<linkType>();
        }

        private bool ExtensionsAvailable()
        {
            return ((object)data.extensions != null);
        }

        private void CreateExtensions()
        {
            if ((object)data.extensions == null) data.extensions = new waypointExtensionsType();
        }

        /// <remarks/>
        public decimal ele
        {
            get
            {
                return data.ele;
            }
            set
            {
                data.ele = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool eleSpecified
        {
            get
            {
                return data.eleSpecified;
            }
            set
            {
                data.eleSpecified = value;
            }
        }

        /// <remarks/>
        public System.DateTime time
        {
            get
            {
                return data.time;
            }
            set
            {
                data.time = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool timeSpecified
        {
            get
            {
                return data.timeSpecified;
            }
            set
            {
                data.timeSpecified = value;
            }
        }

        /// <remarks/>
        public decimal magvar
        {
            get
            {
                return data.magvar;
            }
            set
            {
                data.magvar = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool magvarSpecified
        {
            get
            {
                return data.magvarSpecified;
            }
            set
            {
                data.magvarSpecified = value;
            }
        }

        /// <remarks/>
        public decimal geoidheight
        {
            get
            {
                return data.geoidheight;
            }
            set
            {
                data.geoidheight = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool geoidheightSpecified
        {
            get
            {
                return data.geoidheightSpecified;
            }
            set
            {
                data.geoidheightSpecified = value;
            }
        }

        /// <remarks/>
        public string name
        {
            get
            {
                return data.name;
            }
            set
            {
                data.name = value;
            }
        }

        /// <remarks/>
        public string cmt
        {
            get
            {
                return data.cmt;
            }
            set
            {
                data.cmt = value;
            }
        }

        /// <remarks/>
        public string desc
        {
            get
            {
                return data.desc;
            }
            set
            {
                data.desc = value;
            }
        }

        /// <remarks/>
        public string src
        {
            get
            {
                return data.src;
            }
            set
            {
                data.src = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")]
        public string url
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].href;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].href = value;
            }
        }

        /// <remarks/>
        public string urlname
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].text;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].text = value;
            }
        }

        /// <remarks/>
        public string sym
        {
            get
            {
                return data.sym;
            }
            set
            {
                data.sym = value;
            }
        }

        /// <remarks/>
        public string type
        {
            get
            {
                return data.type;
            }
            set
            {
                data.type = value;
            }
        }

        /// <remarks/>
        public fixType1_0 fix
        {
            get
            {
                return (fixType1_0)data.fix;
            }
            set
            {
                data.fix = (fixType)value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool fixSpecified
        {
            get
            {
                return data.fixSpecified;
            }
            set
            {
                data.fixSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "nonNegativeInteger")]
        public string sat
        {
            get
            {
                return data.sat;
            }
            set
            {
                data.sat = value;
            }
        }

        /// <remarks/>
        public decimal hdop
        {
            get
            {
                return data.hdop;
            }
            set
            {
                data.hdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool hdopSpecified
        {
            get
            {
                return data.hdopSpecified;
            }
            set
            {
                data.hdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal vdop
        {
            get
            {
                return data.vdop;
            }
            set
            {
                data.vdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool vdopSpecified
        {
            get
            {
                return data.vdopSpecified;
            }
            set
            {
                data.vdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal pdop
        {
            get
            {
                return data.pdop;
            }
            set
            {
                data.pdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool pdopSpecified
        {
            get
            {
                return data.pdopSpecified;
            }
            set
            {
                data.pdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal ageofdgpsdata
        {
            get
            {
                return data.ageofdgpsdata;
            }
            set
            {
                data.ageofdgpsdata = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ageofdgpsdataSpecified
        {
            get
            {
                return data.ageofdgpsdataSpecified;
            }
            set
            {
                data.ageofdgpsdataSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "integer")]
        public string dgpsid
        {
            get
            {
                return data.dgpsid;
            }
            set
            {
                data.dgpsid = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        public System.Xml.XmlElement[] Any
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.Any;
            }
            set
            {
                CreateExtensions();
                data.extensions.Any = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal lat
        {
            get
            {
                return data.lat;
            }
            set
            {
                data.lat = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal lon
        {
            get
            {
                return data.lon;
            }
            set
            {
                data.lon = value;
            }
        }

        #region groundspeak extension

        [System.Xml.Serialization.XmlElementAttribute("cache", Namespace = "http://www.groundspeak.com/cache/1/1")]
        public cache geocache
        {
            get
            {
                if (ExtensionsAvailable() == false) return null;
                return data.extensions.geocache;
            }
            set
            {
                CreateExtensions();
                data.extensions.geocache = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("cache", Namespace = "http://www.groundspeak.com/cache/1/0")]
        public cache1_0 geocache1_0
        {
            get
            {
                if (geocache == null) return null;
                return new cache1_0(geocache);
            }
            set { geocache = value.WrappedData; }
        }

        [XmlIgnoreAttribute()]
        public bool geocacheSpecified
        {
            get { return (SerializationOptions.GroundspeakVersion & GroundspeakExtensionVersions.v1_1) > 0; }
            set { }
        }

        [XmlIgnoreAttribute()]
        public bool geocache1_0Specified
        {
            get { return (SerializationOptions.GroundspeakVersion & GroundspeakExtensionVersions.v1_0) > 0; }
            set { }
        }

        #endregion groundspeak extension

        #region garmin extension

        [System.Xml.Serialization.XmlElementAttribute("WaypointExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v3")]
        public WaypointExtension_t waypointExtension
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.waypointExtension;
            }
            set
            {
                CreateExtensions();
                data.extensions.waypointExtension = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("RoutePointExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v3")]
        public RoutePointExtension_t routePointExtension
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.routePointExtension;
            }
            set
            {
                CreateExtensions();
                data.extensions.routePointExtension = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("TrackPointExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v3")]
        public TrackPointExtension_t trackPointExtension
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.trackPointExtension;
            }
            set
            {
                CreateExtensions();
                data.extensions.trackPointExtension = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("WaypointExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v2")]
        public WaypointExtension_t_v2 waypointExtension_v2
        {
            get
            {
                if (waypointExtension == null) return null;
                return new WaypointExtension_t_v2(waypointExtension);
            }
            set { waypointExtension = value.WrappedData; }
        }

        [System.Xml.Serialization.XmlElementAttribute("TrackPointExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v2")]
        public TrackPointExtension_t_v2 trackPointExtension_v2
        {
            get
            {
                if (trackPointExtension == null) return null;
                return new TrackPointExtension_t_v2(trackPointExtension);
            }
            set { trackPointExtension = value.WrappedData; }
        }

        [System.Xml.Serialization.XmlElementAttribute("WaypointExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v1")]
        public WaypointExtension_t_v1 waypointExtension_v1
        {
            get
            {
                if (waypointExtension == null) return null;
                return new WaypointExtension_t_v1(waypointExtension);
            }
            set { waypointExtension = value.WrappedData; }
        }

        [System.Xml.Serialization.XmlElementAttribute("TrackPointExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v1")]
        public TrackPointExtension_t_v1 trackPointExtension_v1
        {
            get
            {
                if (trackPointExtension == null) return null;
                return new TrackPointExtension_t_v1(trackPointExtension);
            }
            set { trackPointExtension = value.WrappedData; }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool waypointExtensionSpecified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v3) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool routePointExtensionSpecified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v3) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool trackPointExtensionSpecified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v3) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool waypointExtension_v2Specified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v2) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool trackPointExtension_v2Specified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v2) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool waypointExtension_v1Specified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v1) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool trackPointExtension_v1Specified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v1) > 0; }
            set { }
        }

        #endregion garmin extension
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.topografix.com/GPX/1/0")]
    public enum fixType1_0
    {
        /// <remarks/>
        none,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("2d")]
        _2d,

        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("3d")]
        _3d,

        /// <remarks/>
        dgps,

        /// <remarks/>
        pps,
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.topografix.com/GPX/1/0")]
    public partial class gpxRte1_0 : XmlClassWrapper<rteType>
    {
        public gpxRte1_0()
            : base(new rteType())
        { }

        public gpxRte1_0(rteType data)
            : base(data)
        {
        }

        private bool LinkAvailable()
        {
            return ((object)data.link != null);
        }

        private void CreateLink()
        {
            if ((object)data.link == null) data.link = new List<linkType>();
        }

        private void CreateRtePoints()
        {
            if ((object)data.rtept == null) data.rtept = new List<wptType>();
        }

        private bool ExtensionsAvailable()
        {
            return ((object)data.extensions != null);
        }

        private void CreateExtensions()
        {
            if ((object)data.extensions == null) data.extensions = new routeExtensionsType();
        }

        /// <remarks/>
        public string name
        {
            get
            {
                return data.name;
            }
            set
            {
                data.name = value;
            }
        }

        /// <remarks/>
        public string cmt
        {
            get
            {
                return data.cmt;
            }
            set
            {
                data.cmt = value;
            }
        }

        /// <remarks/>
        public string desc
        {
            get
            {
                return data.desc;
            }
            set
            {
                data.desc = value;
            }
        }

        /// <remarks/>
        public string src
        {
            get
            {
                return data.src;
            }
            set
            {
                data.src = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")]
        public string url
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].href;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].href = value;
            }
        }

        /// <remarks/>
        public string urlname
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].text;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].text = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "nonNegativeInteger")]
        public string number
        {
            get
            {
                return data.number;
            }
            set
            {
                data.number = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        public System.Xml.XmlElement[] Any
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.Any;
            }
            set
            {
                CreateExtensions();
                data.extensions.Any = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("rtept")]
        public CollectionWrapper<gpxRteRtept1_0, wptType> rtept
        {
            get
            {
                CreateRtePoints();
                return new CollectionWrapper<gpxRteRtept1_0, wptType>(data.rtept);
            }
            set
            {
                CreateRtePoints();
                data.rtept = value.Data;
            }
        }

        #region garmin extension

        [System.Xml.Serialization.XmlElementAttribute("RouteExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v3")]
        public RouteExtension_t routeExtension
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.routeExtension;
            }
            set
            {
                CreateExtensions();
                data.extensions.routeExtension = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("RouteExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v2")]
        public RouteExtension_t_v2 routeExtension_v2
        {
            get
            {
                if (routeExtension == null) return null;
                return new RouteExtension_t_v2(routeExtension);
            }
            set { routeExtension = value.WrappedData; }
        }

        [System.Xml.Serialization.XmlElementAttribute("RouteExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v1")]
        public RouteExtension_t_v1 routeExtension_v1
        {
            get
            {
                if (routeExtension == null) return null;
                return new RouteExtension_t_v1(routeExtension);
            }
            set { routeExtension = value.WrappedData; }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool routeExtensionSpecified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v3) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool routeExtension_v2Specified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v2) > 0; }
            set { }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool routeExtension_v1Specified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v1) > 0; }
            set { }
        }

        #endregion garmin extension
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.topografix.com/GPX/1/0")]
    public partial class gpxRteRtept1_0 : XmlClassWrapper<wptType>
    {
        public gpxRteRtept1_0()
            : base(new wptType())
        { }

        public gpxRteRtept1_0(wptType data)
            : base(data)
        {
        }

        private bool LinkAvailable()
        {
            return ((object)data.link != null);
        }

        private void CreateLink()
        {
            if ((object)data.link == null) data.link = new List<linkType>();
        }

        private bool ExtensionsAvailable()
        {
            return ((object)data.extensions != null);
        }

        private void CreateExtensions()
        {
            if ((object)data.extensions == null) data.extensions = new waypointExtensionsType();
        }

        /// <remarks/>
        public decimal ele
        {
            get
            {
                return data.ele;
            }
            set
            {
                data.ele = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool eleSpecified
        {
            get
            {
                return data.eleSpecified;
            }
            set
            {
                data.eleSpecified = value;
            }
        }

        /// <remarks/>
        public System.DateTime time
        {
            get
            {
                return data.time;
            }
            set
            {
                data.time = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool timeSpecified
        {
            get
            {
                return data.timeSpecified;
            }
            set
            {
                data.timeSpecified = value;
            }
        }

        /// <remarks/>
        public decimal magvar
        {
            get
            {
                return data.magvar;
            }
            set
            {
                data.magvar = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool magvarSpecified
        {
            get
            {
                return data.magvarSpecified;
            }
            set
            {
                data.magvarSpecified = value;
            }
        }

        /// <remarks/>
        public decimal geoidheight
        {
            get
            {
                return data.geoidheight;
            }
            set
            {
                data.geoidheight = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool geoidheightSpecified
        {
            get
            {
                return data.geoidheightSpecified;
            }
            set
            {
                data.geoidheightSpecified = value;
            }
        }

        /// <remarks/>
        public string name
        {
            get
            {
                return data.name;
            }
            set
            {
                data.name = value;
            }
        }

        /// <remarks/>
        public string cmt
        {
            get
            {
                return data.cmt;
            }
            set
            {
                data.cmt = value;
            }
        }

        /// <remarks/>
        public string desc
        {
            get
            {
                return data.desc;
            }
            set
            {
                data.desc = value;
            }
        }

        /// <remarks/>
        public string src
        {
            get
            {
                return data.src;
            }
            set
            {
                data.src = value;
            }
        }

        /// <remarks/>
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")]
        public string url
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].href;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].href = value;
            }
        }

        /// <remarks/>
        public string urlname
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].text;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].text = value;
            }
        }

        /// <remarks/>
        public string sym
        {
            get
            {
                return data.sym;
            }
            set
            {
                data.sym = value;
            }
        }

        /// <remarks/>
        public string type
        {
            get
            {
                return data.type;
            }
            set
            {
                data.type = value;
            }
        }

        /// <remarks/>
        public fixType1_0 fix
        {
            get
            {
                return (fixType1_0)data.fix;
            }
            set
            {
                data.fix = (fixType)value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool fixSpecified
        {
            get
            {
                return data.fixSpecified;
            }
            set
            {
                data.fixSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "nonNegativeInteger")]
        public string sat
        {
            get
            {
                return data.sat;
            }
            set
            {
                data.sat = value;
            }
        }

        /// <remarks/>
        public decimal hdop
        {
            get
            {
                return data.hdop;
            }
            set
            {
                data.hdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool hdopSpecified
        {
            get
            {
                return data.hdopSpecified;
            }
            set
            {
                data.hdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal vdop
        {
            get
            {
                return data.vdop;
            }
            set
            {
                data.vdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool vdopSpecified
        {
            get
            {
                return data.vdopSpecified;
            }
            set
            {
                data.vdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal pdop
        {
            get
            {
                return data.pdop;
            }
            set
            {
                data.pdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool pdopSpecified
        {
            get
            {
                return data.pdopSpecified;
            }
            set
            {
                data.pdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal ageofdgpsdata
        {
            get
            {
                return data.ageofdgpsdata;
            }
            set
            {
                data.ageofdgpsdata = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ageofdgpsdataSpecified
        {
            get
            {
                return data.ageofdgpsdataSpecified;
            }
            set
            {
                data.ageofdgpsdataSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "integer")]
        public string dgpsid
        {
            get
            {
                return data.dgpsid;
            }
            set
            {
                data.dgpsid = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        public System.Xml.XmlElement[] Any
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.Any;
            }
            set
            {
                CreateExtensions();
                data.extensions.Any = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal lat
        {
            get
            {
                return data.lat;
            }
            set
            {
                data.lat = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal lon
        {
            get
            {
                return data.lon;
            }
            set
            {
                data.lon = value;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.topografix.com/GPX/1/0")]
    public partial class gpxTrk1_0 : XmlClassWrapper<trkType>
    {
        public gpxTrk1_0()
            : base(new trkType())
        { }

        public gpxTrk1_0(trkType data)
            : base(data)
        {
        }

        private bool LinkAvailable()
        {
            return ((object)data.link != null);
        }

        private void CreateLink()
        {
            if ((object)data.link == null) data.link = new List<linkType>();
        }

        private bool ExtensionsAvailable()
        {
            return ((object)data.extensions != null);
        }

        private void CreateExtensions()
        {
            if ((object)data.extensions == null) data.extensions = new trackExtensionsType();
        }

        /// <remarks/>
        public string name
        {
            get
            {
                return data.name;
            }
            set
            {
                data.name = value;
            }
        }

        /// <remarks/>
        public string cmt
        {
            get
            {
                return data.cmt;
            }
            set
            {
                data.cmt = value;
            }
        }

        /// <remarks/>
        public string desc
        {
            get
            {
                return data.desc;
            }
            set
            {
                data.desc = value;
            }
        }

        /// <remarks/>
        public string src
        {
            get
            {
                return data.src;
            }
            set
            {
                data.src = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")]
        public string url
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].href;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].href = value;
            }
        }

        /// <remarks/>
        public string urlname
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].text;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].text = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "nonNegativeInteger")]
        public string number
        {
            get
            {
                return data.number;
            }
            set
            {
                data.number = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        public System.Xml.XmlElement[] Any
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.Any;
            }
            set
            {
                CreateExtensions();
                data.extensions.Any = value;
            }
        }

        // ///<remarks/>
        //[System.Xml.Serialization.XmlArrayItemAttribute("trkpt", typeof(gpxTrkTrksegTrkpt1_0), IsNullable = false)]
        //public gpxTrkTrksegTrkpt1_0[][] trkseg
        //{
        //    get
        //    {
        //      //  return data.trkseg;
        //        return null;
        //    }
        //    set
        //    {
        //        //data.trkseg = value;
        //    }
        //}
        private void CreateTrkSeg() { if (data.trkseg == null) data.trkseg = new List<trksegType>(); }

        ///<remarks/>
        [System.Xml.Serialization.XmlElementAttribute("trkseg")]
        public CollectionWrapper<gpxTrkTrkseg1_0, trksegType> TrkSeg
        {
            get
            {
                CreateTrkSeg();
                return new CollectionWrapper<gpxTrkTrkseg1_0, trksegType>(data.trkseg);
            }
            set
            {
                CreateTrkSeg();
                data.trkseg = value.Data;
            }
        }

        #region garmin extension

        [System.Xml.Serialization.XmlElementAttribute("TrackExtension", Namespace = "http://www.garmin.com/xmlschemas/GpxExtensions/v3")]
        public TrackExtension_t trackExtension
        {
            get
            {
                if (ExtensionsAvailable() == false) return null;
                return data.extensions.trackExtension;
            }
            set
            {
                CreateExtensions();
                data.extensions.trackExtension = value;
            }
        }

        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool trackExtensionSpecified
        {
            get { return (SerializationOptions.GarminVersion & GarminExtensionVersions.v3) > 0; }
            set { }
        }

        #endregion garmin extension
    }

    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.topografix.com/GPX/1/0")]
    public partial class gpxTrkTrkseg1_0 : XmlClassWrapper<trksegType>
    {
        public gpxTrkTrkseg1_0()
            : base(new trksegType())
        { }

        public gpxTrkTrkseg1_0(trksegType data)
            : base(data)
        {
        }

        private void CreateTrkPt() { if (data.trkpt == null) data.trkpt = new List<wptType>(); }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("trkpt")]
        public CollectionWrapper<gpxWpt1_0, wptType> wpt
        {
            get
            {
                CreateTrkPt();
                return new CollectionWrapper<gpxWpt1_0, wptType>(data.trkpt);
            }
            set
            {
                CreateTrkPt();
                data.trkpt = value.Data as List<wptType>;
            }
        }
    }

    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.topografix.com/GPX/1/0")]
    public partial class gpxTrkTrkpt1_0 : XmlClassWrapper<wptType>
    {
        public gpxTrkTrkpt1_0()
            : base(new wptType())
        { }

        public gpxTrkTrkpt1_0(wptType data)
            : base(data)
        {
        }

        private bool LinkAvailable()
        {
            return ((object)data.link != null);
        }

        private void CreateLink()
        {
            if ((object)data.link == null) data.link = new List<linkType>();
        }

        private bool ExtensionsAvailable()
        {
            return ((object)data.extensions != null);
        }

        private void CreateExtensions()
        {
            if ((object)data.extensions == null) data.extensions = new waypointExtensionsType();
        }

        /// <remarks/>
        public decimal ele
        {
            get
            {
                return data.ele;
            }
            set
            {
                data.ele = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool eleSpecified
        {
            get
            {
                return data.eleSpecified;
            }
            set
            {
                data.eleSpecified = value;
            }
        }

        /// <remarks/>
        public System.DateTime time
        {
            get
            {
                return data.time;
            }
            set
            {
                data.time = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool timeSpecified
        {
            get
            {
                return data.timeSpecified;
            }
            set
            {
                data.timeSpecified = value;
            }
        }

        //-----------------------------------
        // Následující hodnoty jsou ignorovány, protože nejsou součástí nové verze GPX
        //-----------------------------------
        ///// <remarks/>
        //public decimal course
        //{
        //    get
        //    {
        //        return data.course;
        //    }
        //    set
        //    {
        //        data.course = value;
        //    }
        //}

        ///// <remarks/>
        //[System.Xml.Serialization.XmlIgnoreAttribute()]
        //public bool courseSpecified
        //{
        //    get
        //    {
        //        return data.courseSpecified;
        //    }
        //    set
        //    {
        //        data.courseSpecified = value;
        //    }
        //}

        ///// <remarks/>
        //public decimal speed
        //{
        //    get
        //    {
        //        return data.speed;
        //    }
        //    set
        //    {
        //        data.speed = value;
        //    }
        //}

        ///// <remarks/>
        //[System.Xml.Serialization.XmlIgnoreAttribute()]
        //public bool speedSpecified
        //{
        //    get
        //    {
        //        return data.speedSpecified;
        //    }
        //    set
        //    {
        //        data.speedSpecified = value;
        //    }
        //}

        /// <remarks/>
        public decimal magvar
        {
            get
            {
                return data.magvar;
            }
            set
            {
                data.magvar = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool magvarSpecified
        {
            get
            {
                return data.magvarSpecified;
            }
            set
            {
                data.magvarSpecified = value;
            }
        }

        /// <remarks/>
        public decimal geoidheight
        {
            get
            {
                return data.geoidheight;
            }
            set
            {
                data.geoidheight = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool geoidheightSpecified
        {
            get
            {
                return data.geoidheightSpecified;
            }
            set
            {
                data.geoidheightSpecified = value;
            }
        }

        /// <remarks/>
        public string name
        {
            get
            {
                return data.name;
            }
            set
            {
                data.name = value;
            }
        }

        /// <remarks/>
        public string cmt
        {
            get
            {
                return data.cmt;
            }
            set
            {
                data.cmt = value;
            }
        }

        /// <remarks/>
        public string desc
        {
            get
            {
                return data.desc;
            }
            set
            {
                data.desc = value;
            }
        }

        /// <remarks/>
        public string src
        {
            get
            {
                return data.src;
            }
            set
            {
                data.src = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "anyURI")]
        public string url
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].href;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].href = value;
            }
        }

        /// <remarks/>
        public string urlname
        {
            get
            {
                if (!LinkAvailable()) return null;
                if (data.link.Count == 0) return null;
                return data.link[0].text;
            }
            set
            {
                CreateLink();
                if (data.link.Count == 0) data.link.Add(new linkType());
                data.link[0].text = value;
            }
        }

        /// <remarks/>
        public string sym
        {
            get
            {
                return data.sym;
            }
            set
            {
                data.sym = value;
            }
        }

        /// <remarks/>
        public string type
        {
            get
            {
                return data.type;
            }
            set
            {
                data.type = value;
            }
        }

        /// <remarks/>
        public fixType1_0 fix
        {
            get
            {
                return (fixType1_0)data.fix;
            }
            set
            {
                data.fix = (fixType)value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool fixSpecified
        {
            get
            {
                return data.fixSpecified;
            }
            set
            {
                data.fixSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "nonNegativeInteger")]
        public string sat
        {
            get
            {
                return data.sat;
            }
            set
            {
                data.sat = value;
            }
        }

        /// <remarks/>
        public decimal hdop
        {
            get
            {
                return data.hdop;
            }
            set
            {
                data.hdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool hdopSpecified
        {
            get
            {
                return data.hdopSpecified;
            }
            set
            {
                data.hdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal vdop
        {
            get
            {
                return data.vdop;
            }
            set
            {
                data.vdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool vdopSpecified
        {
            get
            {
                return data.vdopSpecified;
            }
            set
            {
                data.vdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal pdop
        {
            get
            {
                return data.pdop;
            }
            set
            {
                data.pdop = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool pdopSpecified
        {
            get
            {
                return data.pdopSpecified;
            }
            set
            {
                data.pdopSpecified = value;
            }
        }

        /// <remarks/>
        public decimal ageofdgpsdata
        {
            get
            {
                return data.ageofdgpsdata;
            }
            set
            {
                data.ageofdgpsdata = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ageofdgpsdataSpecified
        {
            get
            {
                return data.ageofdgpsdataSpecified;
            }
            set
            {
                data.ageofdgpsdataSpecified = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(DataType = "integer")]
        public string dgpsid
        {
            get
            {
                return data.dgpsid;
            }
            set
            {
                data.dgpsid = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        public System.Xml.XmlElement[] Any
        {
            get
            {
                if (!ExtensionsAvailable()) return null;
                return data.extensions.Any;
            }
            set
            {
                CreateExtensions();
                data.extensions.Any = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal lat
        {
            get
            {
                return data.lat;
            }
            set
            {
                data.lat = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal lon
        {
            get
            {
                return data.lon;
            }
            set
            {
                data.lon = value;
            }
        }
    }
}